
# 请求函数
# 定义一个函数，用于发送GET请求
from requests import sessions


def request_get(url, ret_type="text", timeout=5, encoding="UTF8"):
    # 设置请求头
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36"
    }
    # 发送GET请求
    with sessions.Session() as session:
        res = session.request(method="get", url=url, headers=headers,params=None)
        # 设置返回数据的编码格式
        res.encoding = encoding
        # 根据返回类型返回数据
        if ret_type == "text":
            return res.text
        elif ret_type == "image":
            return res.content


"""
发起HTTP请求的通用函数。

    本函数通过requests库的Session对象来发起HTTP请求，支持多种请求参数的配置，旨在提供一个灵活且易于使用的HTTP请求接口。

    参数:
    - method: 请求方法，如GET, POST等。
    - url: 请求的URL地址。
    - params: URL参数，以字典形式提供。
    - data: 请求体数据，以字典形式提供，用于POST, PUT等请求方法。
    - headers: 请求头，以字典形式提供。
    - cookies: 请求携带的cookies，以字典形式提供。
    - files: 用于上传文件，以字典形式提供，key为参数名，value为文件路径。
    - auth: 请求的认证信息，可以是tuple形式的(username, password)。
    - timeout: 请求超时时间，以秒为单位。
    - allow_redirects: 是否允许重定向，默认为True。
    - proxies: 代理信息，以字典形式提供，支持http和https两种代理。
    - hooks: 用于回调的钩子，以字典形式提供。
    - stream: 是否以流的形式下载response内容。
    - verify: 是否验证SSL证书，或者提供自定义的SSL证书验证逻辑。
    - cert: 客户端证书，可以是单个证书文件路径，或者是私钥和证书的元组。
    - json: 请求体数据，以JSON格式提供，用于发起JSON请求。

    返回:
    返回一个Response对象，包含服务器的响应信息。
"""
def req(method,
        url,
        params=None,
        data=None,
        headers=None,
        cookies=None,
        files=None,
        auth=None,
        timeout=3,
        allow_redirects=False,
        proxies=None,
        hooks=None,
        stream=None,
        verify=None,
        cert=None,
        json=None,):
    with sessions.Session() as session:
        return  session.request(method=method, url=url, headers=headers,json=json,params=params,data=data,timeout=timeout)